 阶段 1：平台基础能力升级（为多服务做准备）
目标：
增强现有系统，支持多服务、异步任务、审计日志。

✅ 子任务：
步骤	内容
1.1	✅ 统一 API 响应封装函数
创建 response.py，封装成功/失败响应格式
1.2	✅ RequestId 中间件
自动生成或透传 X-Request-Id，注入日志
1.3	✅ 审计日志模型
在 MongoDB 中创建 audit_logs 集合：
{ user_id, action, resource_type, resource_id, status, request_id, timestamp }
1.4	✅ 引入异步任务队列（Celery + Redis）
用于证书申请、备份、同步等耗时操作
1.5	✅ 资源基类抽象
定义通用字段：user_id, created_at, updated_at, status, tags
示例：统一响应封装
python
编辑
# utils/response.py
from pydantic import BaseModel
from datetime import datetime
from typing import Optional, Generic, TypeVar

T = TypeVar('T')

class ResponseMetadata(BaseModel):
    RequestId: str
    Action: str
    Version: str
    Service: str
    Timestamp: str = Field(default_factory=lambda: datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ"))

class APIResponse(BaseModel, Generic[T]):
    ResponseMetadata: ResponseMetadata
    Result: Optional[T] = None
    Error: Optional[dict] = None
🔹 阶段 2：证书中心（Certificate Center）
产品模块：/cert/v1
接口设计：
接口	URL
申请证书	POST /cert/v1/Certificate/Apply
续签证书	POST /cert/v1/Certificate/Renew
获取证书列表	POST /cert/v1/Certificate/List
绑定域名	POST /cert/v1/Certificate/BindDomain
下载证书	POST /cert/v1/Certificate/Download
数据模型：
python
编辑
class CertificateInDB(BaseModel):
    user_id: str
    domain: str
    provider: str = "letsencrypt"  # 或自定义
    status: str = "pending"  # pending, issued, expired, revoked
    cert_pem: Optional[str]
    key_pem: Optional[str]
    expires_at: datetime
    created_at: datetime
技术实现：
使用 acme 库对接 Let's Encrypt
异步任务：apply_certificate_task(domain, user_id)
支持 DNS-01 或 HTTP-01 验证
自动续签（定时任务）
🔹 阶段 3：域名中心（Domain & DNS）
产品模块：/dns/v1
接口设计：
接口	URL
添加域名	POST /dns/v1/Domain/Add
删除域名	POST /dns/v1/Domain/Delete
添加解析记录	POST /dns/v1/Record/Create
更新解析记录	POST /dns/v1/Record/Update
获取解析列表	POST /dns/v1/Record/List
数据模型：
python
编辑
class DomainInDB(BaseModel):
    user_id: str
    name: str  # example.com
    provider: str = "cloudflare"
    status: str = "active"
    created_at: datetime

class DNSRecordInDB(BaseModel):
    user_id: str
    domain_id: str
    type: str  # A, CNAME, TXT, MX
    name: str  # www, @, mail
    value: str
    ttl: int = 300
技术实现：
对接 Cloudflare / Aliyun DNS API
使用 requests 调用外部 API
支持批量导入/导出
🔹 阶段 4：云监控（Cloud Monitoring）
产品模块：/mon/v1
接口设计：
接口	URL
创建监控项	POST /mon/v1/Metric/Create
创建告警规则	POST /mon/v1/AlertRule/Create
获取监控数据	POST /mon/v1/Metric/Query
获取告警历史	POST /mon/v1/Alert/History
数据模型：
python
编辑
class MetricPoint(BaseModel):
    user_id: str
    metric: str  # cpu_usage, memory_usage, http_latency
    value: float
    timestamp: datetime
    labels: dict = {}  # host=web1, region=us-east

class AlertRule(BaseModel):
    user_id: str
    metric: str
    condition: str  # > 80
    duration: str  # 5m
    notify_url: str  # webhook
技术实现：
使用 Prometheus Pushgateway 或自建指标存储
定时采集主机/容器指标
告警通过 Webhook 发送到钉钉/企业微信
🔹 阶段 5：容器服务（Container & K8s）
产品模块：/cs/v1
接口设计：
接口	URL
添加 K8s 集群	POST /cs/v1/Cluster/Add
获取集群列表	POST /cs/v1/Cluster/List
部署应用	POST /cs/v1/App/Deploy
获取 Pod 列表	POST /cs/v1/App/ListPods
镜像加速配置	POST /cs/v1/Image/Accelerate
数据模型：
python
编辑
class ClusterInDB(BaseModel):
    user_id: str
    name: str
    kubeconfig: str  # 加密存储
    status: str  # connected, disconnected
    nodes: int
技术实现：
使用 kubernetes-python-client 连接用户集群
kubeconfig 加密存储（AES 或 KMS）
提供 Web Terminal（通过 WebSocket 代理 kubectl exec）
镜像加速：提供私有镜像仓库或代理
🔹 阶段 6：日志服务（Log Service）
产品模块：/log/v1
接口设计：
接口	URL
创建日志项目	POST /log/v1/Project/Create
写入日志	POST /log/v1/Log/Push
查询日志	POST /log/v1/Log/Query
设置索引	POST /log/v1/Log/SetIndex
数据模型：
python
编辑
class LogEntry(BaseModel):
    user_id: str
    project_id: str
    timestamp: datetime
    level: str  # info, error, warn
    message: str
    context: dict = {}
技术实现：
使用 Elasticsearch 或 ClickHouse 存储日志
提供 log-agent 安装脚本（类似阿里云 SLS 采集器）
支持正则、时间范围、关键词查询
🔹 阶段 7：主机管理 & 数据库管理
产品模块：/host/v1, /db/v1
主机管理功能：
SSH 连接（Web Terminal）
批量命令执行
文件上传下载
资源监控（CPU/内存/磁盘）
数据库管理功能：
连接信息加密存储
数据备份（定时任务）
数据同步（源 → 目标）
结构迁移（Schema Diff）
技术实现：
主机：使用 paramiko 实现 SSH 代理
数据库：使用 sqlalchemy + alembic 实现迁移
所有操作走异步任务
🏗️ 整体架构图（简化版）
text
编辑
+------------------+     +---------------------+
|   Web 控制台      |<--->|   FastAPI Gateway    |
+------------------+     +----------+----------+
                                    |
               +--------------------+--------------------+
               |                    |                    |
       +-------v------+   +---------v--------+   +------v-------+
       |  MongoDB     |   |   Redis (Celery)  |   |  MinIO/S3    |
       | (用户/资源)   |   | (任务队列)         |   | (证书/文件)  |
       +--------------+   +-------------------+   +--------------+
               |                    |
       +-------v--------------------v-------------------+
       |           外部系统集成                           |
       |  Let's Encrypt, Cloudflare, K8s, Prometheus,   |
       |  MySQL, PostgreSQL, Elasticsearch, SMTP, etc.  |
       +------------------------------------------------+
✅ 推荐技术栈组合
功能	技术选型
后端框架	FastAPI
数据库	MongoDB（元数据）+ Elasticsearch（日志）+ ClickHouse（监控）
缓存/队列	Redis + Celery
文件存储	MinIO 或 S3
消息通知	Webhook / 钉钉 / 企业微信
SSH 连接	Paramiko
K8s 客户端	kubernetes-client/python
证书申请	acme / certbot
DNS 对接	cloudflare-python / aliyun-openapi
前端	Vue3 + Tailwind 或 React + Ant Design
✅ 开发建议
先做 MVP：从 证书中心 + 域名解析 开始，快速验证流程。
API 优先：每个模块先设计 API 文档，再实现。
异步化：所有耗时操作（申请、备份、同步）必须异步。
日志追踪：RequestId 贯穿所有服务，便于排查。
权限复用：复用现有的 get_current_user 和 get_current_admin。
资源命名规范：
集合名：certificates, domains, clusters, logs
API 路径：/产品/v1/模块/接口